package net.tv90.business.service;

import net.tv90.business.model.dto.SubjectQueryDTO;
import net.tv90.business.model.dto.SubjectSubmitDTO;
import net.tv90.business.model.vo.StudentVO;
import net.tv90.business.model.vo.SubjectVO;

import java.util.List;

public interface SubjectService {

    /**
     * 教师提交课题
     * @param dto 课题DTO
     */
    void submitSubject(SubjectSubmitDTO dto);

    /**
     * 查询课题
     * @param dto 查询课题
     * @return 课题
     */
    List<SubjectVO> querySubject(SubjectQueryDTO dto);

    /**
     * 查询课题预选的所有学生姓名
     * @param id 课题id
     * @return 学生姓名list
     */
    List<StudentVO> queryPreSelectionRecord(Long id);

    /**
     * 教师删除题目
     * @param id 课题id
     * @param teacherId 教师id
     * @return 是否成功
     */
    boolean deleteSubject(Long id, Long teacherId);

    /**
     * 学生选题
     * @param id 课题id
     * @param studentId 学生id
     * @return 是否成功
     */
    boolean selectSubject(Long id, Long studentId);

    /**
     * 学生撤销选题
     * @param id 课题id
     * @param studentId 学生id
     * @return 是否成功
     */
    boolean withdrawSubject(Long id, Long studentId);

    /**
     * 导师确认选择学生
     * @param id 课题id
     * @param studentId 学生id
     * @return 是否成功
     */
    boolean confirmSelectStudent(Long id, Long studentId, Long teacherId);
}
